package com.explorati.LeetCode028.strStr;

/**
 * @ Author : Weijian_Wang
 * @ Date : Created in 21:30 2020/9/21 0021
 * @ Description ：
 */
public class Solution {
    /**
     * 给定一个 haystack 字符串和一个 needle 字符串，在 haystack 字符串中找出 needle 字符串出现的第一个位置 (从0开始)。如果不存在，则返回  -1。
     *
     * @param haystack
     * @param needle
     * @return
     */
    public int strStr(String haystack, String needle) {
        if("".equals(needle)) {
            return 0;
        }
        if(needle.length() > haystack.length()) {
            return -1;
        }

        //i指向haystack当前位置的字符
        int i = 0;
        //j指向needle当前位置字符
        int j = 0;

        //如果haystack当前位置的字符等于needle第一个字符，j++, i 不变,下次比较i+j和j比较
        //如果j == needle.length()返回i，否则i = i + j;
        //如果i+j大于hatstack的长度，返回-1
       while(i <= haystack.length() - needle.length()) {
            while(haystack.charAt(i + j) == needle.charAt(j)) {
                j ++;
                if(j == needle.length()) {
                    return i;
                }
            }
            j = 0;
            i++;
        }

        return -1;
    }
}
